package lectores;

import java.io.File;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.sql.SQLException;
import java.util.HashMap;
import javax.xml.parsers.ParserConfigurationException;
import org.apache.poi.openxml4j.exceptions.InvalidFormatException;
import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
import org.xml.sax.SAXException;

public abstract class LectorConvenios {

  public static final int FILTRO_BONOS_PRODUCCION = 1;
  public static final int FILTRO_BONOS_CALIDAD = 2;
  HashMap<String, Integer> mapeoDañosVida = null;
  HashMap<String, Integer> mapeoColumna = null;

  void creaMapeoDañosVida() {
    mapeoDañosVida = new HashMap();
    mapeoDañosVida.put("SEYCOS4", 0);
    mapeoDañosVida.put("SEYCOS5", 0);
    mapeoDañosVida.put("SEYCOS6", 0);
    mapeoDañosVida.put("SEYCOS7", 0);
    mapeoDañosVida.put("SEYCOS9", 2);
    mapeoDañosVida.put("SEYCOS11", 0);
    mapeoDañosVida.put("SEYCOS12", 0);
    mapeoDañosVida.put("SEYCOS13", 1);
    mapeoDañosVida.put("SEYCOS14", 1);
    mapeoDañosVida.put("SEYCOS33", 1);
    mapeoDañosVida.put("SEYCOS34", 1);
    mapeoDañosVida.put("SEYCOS31", 1);
    mapeoDañosVida.put("SEYCOS36", 1);

    mapeoDañosVida.put("SIVISABE4", 0);
    mapeoDañosVida.put("SIVISABE5", 0);
    mapeoDañosVida.put("SIVISABE6", 0);
    mapeoDañosVida.put("SIVISABE7", 0);
    mapeoDañosVida.put("SIVISABE9", 2);
    mapeoDañosVida.put("SIVISABE11", 1);
    mapeoDañosVida.put("SIVISABE12", 1);
    mapeoDañosVida.put("SIVISABE13", 1);
    mapeoDañosVida.put("SIVISABE14", 1);
    mapeoDañosVida.put("SIVISABE33", 1);
    mapeoDañosVida.put("SIVISABE34", 1);
    mapeoDañosVida.put("SIVISABE31", 1);
    mapeoDañosVida.put("SIVISABE36", 1);

  }

  void creaMapeoColumnas() {
    mapeoColumna = new HashMap();

    //Se insertan las entradas del mapeo de daños
    mapeoColumna.put("04", 10);
    mapeoColumna.put("05", 4);
    mapeoColumna.put("06", 9);
    mapeoColumna.put("07", 11);
    mapeoColumna.put("09", 3);
    mapeoColumna.put("011", 5);
    mapeoColumna.put("012", 6);
    mapeoColumna.put("112", 14);
    mapeoColumna.put("113", 12);
    mapeoColumna.put("114", 13);
    mapeoColumna.put("133", 1);
    mapeoColumna.put("134", 8);
    mapeoColumna.put("131", 2);
    mapeoColumna.put("136", 7);
  }

  int clasificaRamo(String so, String id_ramo_cont, File archivoExcel) throws ExcelMalFormadoException {
    String key = "";
    try {
      key = so + (int) Double.parseDouble(id_ramo_cont);
    } catch (NumberFormatException nfe) {
      throw new ExcelMalFormadoException(ExcelMalFormadoException.FALTA_COLUMNA, archivoExcel);
    }
    Integer ramo = mapeoDañosVida.get(key);
    if (ramo == null) {
      return -1;
    }
    return ramo;
  }

  int columnaCorresp(String so, String id_ramo_cont) {
    if (so.contentEquals("SEYCOS")) {
      so = "0";
    } else if (so.contentEquals("SIVISABE")) {
      so = "1";
    }
    String key = so + id_ramo_cont;
    Integer columna = mapeoColumna.get(key);
    if (columna == null) {
      return -1;
    }
    return columna;
  }

  public abstract void insertaRegistro(String datos, int renglon) throws SQLException, ExcelMalFormadoException;
}